iT邦幫忙

2021 iThome 鐵人賽

DAY 20
0
自我挑戰組

go go let's go - golang 從0開始系列 第 20

Golang 轉生到web世界 - gin新手村

  • 分享至 

  • xImage
  •  

Golang

Gin初探

網路上都有golang的各種框架,也不乏各式各樣的比較文 ,我原本是選好要用另外一套的,但看了某些論壇文章的下面留言,都建議還是使用gin比較好,所以還是選擇玩看看gin囉~~~ 就當體驗看看 絕對不吃虧

Gin有什麼好處:

  • 速度快 性能好
  • 支援中間層
  • 錯誤管理
  • 支援各類型json xml...等
  • 支援restful

開始吧!! 首先起手來個go get, 使用go get 來安裝gin看看
在終端機輸入
github.com/gin-gonic/gin

執行完之後,我們來測試看看gin是不是真的能跑

我就在網路上找了一個範例

package main

import (
	"github.com/gin-gonic/gin"
)

func main() {
	r := gin.Default()
	r.GET("/ping", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"message": "pong",
		})
	})
	r.Run(":8000") 
}

然後 go run來跑看看

輸入 http://localhost:8000/ping

畫面看起來是有了!

 [GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.

[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
 - using env:   export GIN_MODE=release
 - using code:  gin.SetMode(gin.ReleaseMode)

[GIN-debug] GET    /ping                     --> main.main.func1 (3 handlers)
[GIN-debug] Listening and serving HTTP on :8000
[GIN] *********** | 404 |            0s |             ::1 | GET      "/"
[GIN] ***********| 404 |            0s |             ::1 | GET      "/favicon.ico"
[GIN] *********** | 404 |            0s |             ::1 | GET      "/"
[GIN] ***********| 200 |       311.3µs |             ::1 | GET      "/ping"

然後看終端機也確實吐了一些東西了!!!

package main

import (
    "github.com/gin-gonic/gin"
    "net/http"
)

func main(){
    
    router := gin.Default()

    router.GET("/", func(c *gin.Context) {
        c.String(http.StatusOK, "Hello World")
    })
    router.Run(":8000")
}

從上面的程式碼來看,我們使用gin的default來建立一個基礎的路由,並把路由的規則跟function都透過他來取得,跟以往的框架差不多,通常這時候框架都會協助封裝,以方便開發者使用,所以我們可以看到gin.Context的部分,Route.run是啟動整個路由來開始為監聽。

然後附上gin 的github連結 https://github.com/gin-gonic/gin

參考資料:
https://iter01.com/557699.html
https://github.com/gin-gonic/gin


上一篇
Golang 轉生到web世界 - curl
下一篇
Golang 轉生到web世界 - gin路由
系列文
go go let's go - golang 從0開始30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言